package org.japo.java.swing.igu;

import org.japo.java.swing.listeners.GEA;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.ButtonGroup;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;

public class IGU extends JFrame {

    // Pregunta predeterminada de la encuesta
    private final String PREGUNTA = "¿Cree Ud. que éste será un buen año?";

    // Nombres predeterminados de imágenes
    private final String IMG_SI = "mini_si.jpg";
    private final String IMG_NO = "mini_no.jpg";
    private final String IMG_TV = "mini_tv.jpg";

    // Carpeta predeterminada de las imágenes
    private final String RUTA_IMG = "images";

    // referencias a los componentes
    private JLabel lblPregunta;
    private JRadioButton rbtSi;
    private JRadioButton rbtNo;
    private JRadioButton rbtTv;
    private JLabel lblImagen;

    public IGU() {
        iniciarComponentes();
    }

    private void iniciarComponentes() {
        // Panel contenedor
        JPanel pnlPrincipal = new JPanel();
        pnlPrincipal.setLayout(new BorderLayout(5, 5));

        // Borde principal
        Border brdPrincipal = new EmptyBorder(10, 10, 10, 10);
        pnlPrincipal.setBorder(brdPrincipal);

        // Fuente
        Font f = new Font("Calibri", Font.BOLD, 20);

        // Panel pregunta
        JPanel pnlPregunta = new JPanel();
        Dimension dimPregunta = new Dimension(200, 50);
        pnlPregunta.setPreferredSize(dimPregunta);
        pnlPrincipal.add(pnlPregunta, BorderLayout.NORTH);

        // Border pregunta
        Border bPregunta = new TitledBorder("Pregunta");
        pnlPregunta.setBorder(bPregunta);

        // Etiqueta pregunta
        lblPregunta = new JLabel();
        lblPregunta.setText(PREGUNTA);
        lblPregunta.setHorizontalAlignment(JLabel.CENTER);
        lblPregunta.setFont(f);
        pnlPregunta.add(lblPregunta);

        // Panel opciones
        JPanel pnlOpciones = new JPanel();
        Dimension dimOpciones = new Dimension(190, 70);
        pnlOpciones.setPreferredSize(dimOpciones);
        pnlPrincipal.add(pnlOpciones, BorderLayout.WEST);

        // Border opciones
        Border brdOpciones = new TitledBorder("Opciones");
        pnlOpciones.setBorder(brdOpciones);

        // Tamaño botones
        Dimension dimBotones = new Dimension(150, 30);

        // Gestor de eventos de acción
        GEA gea = new GEA(this);

        // Boton TAL VEZ
        rbtTv = new JRadioButton();
        rbtTv.setPreferredSize(dimBotones);
        rbtTv.setText("N/S - N/C");
        rbtTv.setFont(f);
        rbtTv.addActionListener(gea);
        pnlOpciones.add(rbtTv);

        // Boton SI
        rbtSi = new JRadioButton();
        rbtSi.setPreferredSize(dimBotones);
        rbtSi.setText("Afirmativo");
        rbtSi.setFont(f);
        rbtSi.addActionListener(gea);
        pnlOpciones.add(rbtSi);

        // Boton NO
        rbtNo = new JRadioButton();
        rbtNo.setPreferredSize(dimBotones);
        rbtNo.setText("Negativo");
        rbtNo.setFont(f);
        rbtNo.addActionListener(gea);
        pnlOpciones.add(rbtNo);

        // Grupo de botones
        ButtonGroup bg = new ButtonGroup();
        bg.add(rbtTv);
        bg.add(rbtSi);
        bg.add(rbtNo);

        // Panel imagen
        JPanel pnlImagen = new JPanel();
        Dimension dimImagen = new Dimension(170, 70);
        pnlImagen.setPreferredSize(dimImagen);
        pnlPrincipal.add(pnlImagen, BorderLayout.EAST);

        // Border imagen
        Border brdImagen = new TitledBorder("Imagen");
        pnlImagen.setBorder(brdImagen);

        // Imagen
        Icon i = new ImageIcon();

        // Etiqueta imagen
        lblImagen = new JLabel();
        lblImagen.setIcon(i);
        pnlImagen.add(lblImagen);

        // Ventana principal
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setContentPane(pnlPrincipal);
        setResizable(false);
        setTitle("Encuesta");
        setSize(400, 250);
        setLocationRelativeTo(this);
    }

    public void procesarEncuesta(Object o) {
        // Obtiene la ruta a la imagen
        String rutaImg = obtenerRutaImagen(o);
        
        // Instancia la imagen
        Icon i = new ImageIcon(rutaImg);
        
        // Muestra la imagen
        lblImagen.setIcon(i);
    }

    private String obtenerRutaImagen(Object o) {
        String ruta;
        if (o.equals(rbtSi)) {
            ruta = RUTA_IMG + "/" + IMG_SI;
        } else if (o.equals(rbtNo)) {
            ruta = RUTA_IMG + "/" + IMG_NO;
        } else {
            ruta = RUTA_IMG + "/" + IMG_TV;
        }
        return ruta;
    }
}
